<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="./ajax.js"></script>
    <script>
        // Promise 链式调用

        // 每次调用then，都会返回一个Promise对象
        // const promise = ajax('/part-1/javascript-asyn/code/test.json')
        // const promise2 =  ajax('/part-1/javascript-asyn/code/test.json').then(
        //     response=> console.log(response),
        //     error=> console.log(error) // 第二个参数一般可以省略
        // )
        // console.log(promise2 === promise)

        // Promise对象的then方法会返回一个全新的Promise对象
        // 后面的then方法就是在为上一个then返回的Promise注册回调
        // 前面的then方法中的回调函数的返回值会作为后面then方法回调的参数
        // 如果回调中返回的是Promise， 那么后面的then方法的回调会等待它的结束
        // 可以手动更改then返回的promise对象
        // 使用链式调用可以方式Promise的循环嵌套，使promise扁平化
        ajax('/part-1/javascript-asyn/code/test.json')
            .then(value=>{
                console.log('111')
                return 'foo'
            }) // => Promise
            .then(value=>{
                console.log('222')
                console.log(value) // foo
                return 'aaa'
            }) // => Promise
            .then(value=>{
                console.log('333')
                console.log(value) // aaa
            }) // => Promise
            .then(value=>{
                console.log('444')
                console.log(value) // undefined
            })
    </script>
</head>
<body>
    
</body>
</html>